{T}

NoSQL 数据库有哪些典型应用?

0. 引言

关系型数据库(MySQL)擅长结构化数据 + 事务,但在海量高并发、弹性扩展、非结构化数据面前力不从心。NoSQL(Not Only SQL)放弃部分关系模型与事务能力,换取了水平扩展性、高性能与灵活的数据模型。本文梳理 NoSQL 四大家族的能力边界与典型应用,帮你建立选型地图。

1. 关系型 vs NoSQL:能力光谱

维度关系型(MySQL/PostgreSQL)NoSQL
数据模型表 + 行 + 外键KV/文档/列族/图(模型多样化)
事务ACID 强事务多数弱事务(部分支持 ACID 子集)
扩展垂直为主,分库分表复杂天然水平扩展(数据分片内置)
一致性强一致(单机)/复制延迟最终一致为主(可配置)
查询SQL 强大(Join/聚合)按其模型查询,弱 Join
适用核心交易、强一致、复杂查询海量数据、高并发、灵活模型

不是"替代"而是"互补":核心交易数据留 MySQL,海量/高速/灵活数据上 NoSQL——混合架构是主流实践。

2. 四大家族详解

2.1 KV 存储(Key-Value)

代表特点典型应用
Redis内存级性能、丰富数据结构(String/Hash/List/Set/ZSet)、过期策略缓存、Session、分布式锁、排行榜、限流计数
Memcached纯缓存、简单读多场景缓存
etcdRaft 强一致、Watch配置、选主、服务发现(K8s)
  • 适用:读写性能要求极高、单键访问的场景;
  • 局限:无复杂查询、数据量受内存限制(Redis 可持久化但容量仍是约束)。

2.2 文档型(Document)

代表特点典型应用
MongoDBBSON 文档、schema-less、分片集群、事务(4.0+ 副本集)内容管理、用户画像、日志、产品目录、爬虫数据
CouchDB离线优先、同步移动端同步场景
  • 适用:结构多变、嵌套对象、需要索引与查询的场景;
  • 特点:字段可增删(免迁移)、数组/嵌套天然支持、水平分片(Sharding)内置。

2.3 列族存储(Wide Column)

代表特点典型应用
HBase列族组织、海量数据、顺序读写、强一致性订单流水、消息存储、时序数据、推荐特征
Cassandra去中心化(无主)、最终一致、写性能极强物联网、消息、跨机房多活
ClickHouse列式 + 压缩,分析性能极强OLAP 分析、日志分析(归类分析型)
  • 特点:按列存储(压缩率高)、海量扩展(PB 级)、适合大数据写入与范围扫描
  • 注意:HBase 依赖 HDFS/ZooKeeper,运维重;Cassandra 无主模型查询受 partition key 约束。

2.4 图数据库(Graph)

代表特点典型应用
Neo4j属性图模型、Cypher 查询、原生图存储社交关系、推荐(好友的好友)、风控关系图谱、权限
JanusGraph分布式图超大规模图
  • 适用:关系即数据的场景——"节点 + 边"表达人脉、资金流、依赖关系;
  • 优势:多跳查询(A 的朋友的朋友)性能远超关系型递归 SQL。

3. 典型业务选型矩阵

业务需求推荐选型理由
高速缓存/会话/计数Redis内存性能 + 数据结构丰富
高并发秒杀库存Redis + MySQL缓存写 + 数据库兜底
用户画像/产品目录(结构多变)MongoDB灵活 schema + 索引
海量日志/流水(写入为主)HBase / ClickHouse列式存储 + 海量扩展
社交关系/风控图谱Neo4j图查询天然高效
配置/选主强一致etcdRaft 共识
跨机房多活写Cassandra无主 + 最终一致

4. 混合架构实践

图表渲染中…
  • 同步链路:binlog → Canal → 各 NoSQL(近实时同步,秒级);
  • 原则:以 MySQL 为源,NoSQL 为衍生,避免多写混乱;
  • 一致性:容忍秒级延迟(写 MySQL 后异步同步),关键路径读 MySQL。

5. 面试高频问题

  1. Redis 和 Memcached 的区别? 数据结构、持久化、集群、事务(Redis 全胜,Memcached 仅简单缓存);
  2. MongoDB 和 MySQL 怎么选? 结构多变 + 高写入 + 弱事务 → MongoDB;强一致 + 复杂查询 + 事务 → MySQL;
  3. HBase 和 Cassandra 的区别? HBase 有主(ZooKeeper 协调)、强一致;Cassandra 无主、最终一致、写更强;
  4. 为什么有了 MySQL 还需要 NoSQL? 扩展模型不同:MySQL 垂直扩展 + 复杂分片,NoSQL 天然水平扩展,且模型匹配特定场景。

6. 小结

  • NoSQL 四家族:KV(Redis)、文档(MongoDB)、列族(HBase/Cassandra)、图(Neo4j),各解决一类问题;
  • 核心价值:水平扩展、高性能、灵活模型;代价:弱事务/弱 Join;
  • 选型先定位业务:读多(Redis)、结构多变(Mongo)、海量写(HBase)、关系分析(图库)
  • 主流实践是混合架构:MySQL 为源 + NoSQL 衍生,异步同步。

下一章讲解 Elasticsearch 的索引原理:倒排索引、分词与 ES 架构。